Code
El “Potenciar Trabajo” en datos. Miradas
relacionales entre concepciones y números para comprender su
constitución
Cynthia
Ferrari Mango y Ariana Bardauil
2023-11-02
Resultados
Perfil de los y las titulares del programa
En este apartado, caracterizamos el perfil de los y las titulares
teniendo en cuenta la edad, el género y la nacionalidad. En lo que
refiere ….. A nivel país, en la siguiente Pirámide Poblacional de los
Titulares del potenciar trabajo de Argentina (2020 y 2022).
El 86% de los titulares es Argentino. El 4.7% no tiene información
sobre la nacionalidad
Género y sexo
Total pais
## [1] "61.17 %" "38.51 %" "0.18 %" "0.07 %" "0.05 %" "0.03 %" "100 %"
Distribución del Género en Argentina
Datos de género y frecuencia
Género
Cantidad
Porcentaje
Mujer
970,555
61.17 %
Varón
611,010
38.51 %
Feminidad trans/travesti
2,867
0.18 %
Masculinidad trans
1,086
0.07 %
No Binarie
721
0.05 %
Otro
437
0.03 %
Total
1,586,676
100 %
## [1] "5111 corresponden a disidencias. Es decir, el 0.32 %"
Provincia de buenos aires
Distribución del género en PBA
## [1] "60.93 %" "38.86 %" "0.1 %" "0.04 %" "0.04 %" "0.03 %" "100 %"
Distribución del Género en Buenos Aires
Datos de género y frecuencia
Género
Cantidad
Porcentaje
Mujer
488,894
60.93 %
Varón
311,834
38.86 %
Feminidad trans/travesti
835
0.1 %
Masculinidad trans
360
0.04 %
No Binarie
295
0.04 %
Otro
221
0.03 %
Total
802,439
100 %
Pirámide demográfica
Provincia de buenos aires
Titulares por provincia
## [1] "50.57 %" "5.05 %" "4.55 %" "3.8 %" "3.75 %" "3.71 %" "3.66 %"
## [8] "3.51 %" "3.46 %" "2.55 %" "2.06 %" "1.99 %" "1.97 %" "1.53 %"
## [15] "1.34 %" "1.24 %" "1.07 %" "0.92 %" "0.85 %" "0.8 %" "0.6 %"
## [22] "0.55 %" "0.29 %" "0.19 %" "100 %"
Distribución por Provincia
Cantidad y Porcentaje de titulares
Provincia
Cantidad
Porcentaje
Buenos Aires
802,380
50.57 %
Tucumán
80,126
5.05 %
Ciudad de Buenos Aires
72,152
4.55 %
Jujuy
60,231
3.8 %
Salta
59,494
3.75 %
Santa Fe
58,883
3.71 %
Chaco
58,009
3.66 %
Córdoba
55,716
3.51 %
Misiones
54,848
3.46 %
Santiago del Estero
40,398
2.55 %
Entre Ríos
32,752
2.06 %
Mendoza
31,513
1.99 %
Corrientes
31,307
1.97 %
San Juan
24,293
1.53 %
Formosa
21,210
1.34 %
Neuquén
19,610
1.24 %
Río Negro
16,970
1.07 %
La Rioja
14,644
0.92 %
Catamarca
13,542
0.85 %
Chubut
12,681
0.8 %
San Luis
9,481
0.6 %
Santa Cruz
8,738
0.55 %
La Pampa
4,601
0.29 %
Tierra del Fuego
3,035
0.19 %
Total
1,586,614
100 %
Evolución de los titulares / permanencia en el programa
Titulares por periodo y jurisdicción gráfico lineal
Distribución geográfica
Porcentaje de titulares por provincia y año
Sobre el total de titulares
Provincias
Titulares 2020
Titulares 2021
Titulares 2022
Porcentaje 2020
Porcentaje 2021
Porcentaje 2022
Ciudad Autónoma de Buenos Aires
36986
63105
64817
4.74%
4.62%
4.4%
Buenos Aires
425489
700762
739912
54.5%
51.36%
50.17%
Catamarca
5594
11652
12788
0.72%
0.85%
0.87%
Córdoba
22680
46439
51562
2.91%
3.4%
3.5%
Corrientes
15386
25595
29437
1.97%
1.88%
2%
Chaco
26440
49599
55307
3.39%
3.64%
3.75%
Chubut
4606
10172
11230
0.59%
0.75%
0.76%
Entre Ríos
12207
26690
30759
1.56%
1.96%
2.09%
Formosa
8986
17460
20447
1.15%
1.28%
1.39%
Jujuy
27986
51057
56480
3.58%
3.74%
3.83%
La Pampa
2079
3804
3975
0.27%
0.28%
0.27%
La Rioja
6470
12518
13814
0.83%
0.92%
0.94%
Mendoza
13150
26178
29658
1.68%
1.92%
2.01%
Misiones
23115
45955
51982
2.96%
3.37%
3.52%
Neuquén
7578
15938
17719
0.97%
1.17%
1.2%
Río Negro
7909
14749
15241
1.01%
1.08%
1.03%
Salta
27414
50718
56588
3.51%
3.72%
3.84%
San Juan
11620
21305
22890
1.49%
1.56%
1.55%
San Luis
4540
7868
8793
0.58%
0.58%
0.6%
Santa Cruz
2618
7917
7835
0.34%
0.58%
0.53%
Santa Fe
20495
46041
54784
2.63%
3.37%
3.71%
Santiago del Estero
18670
34547
39144
2.39%
2.53%
2.65%
Tucumán
47670
72016
76991
6.11%
5.28%
5.22%
Tierra del Fuego, Antártida e Islas del Atlántico Sur
1034
2394
2598
0.13%
0.18%
0.18%
Total
780722
1364479
1474751
100%
100%
100%
Mapa en función del % poblacional
Argentina
Porcentaje de titulares por año
En base a proyecciones poblacionales de INDEC
Año
Titulares
Poblacion
Porcentaje
2020
780722
45376763
1.7%
2022
1474751
46234830
3.2%
Buenos Aires
Porcentaje de titulares por año en Buenos Aires
En base a proyecciones poblacionales de INDEC
Año
Titulares
Poblacion
Porcentaje
2020
425489
17541141
2.4%
2022
739912
17875743
4.1%
Montos
https://www.indec.gob.ar/indec/web/Nivel4-Tema-3-5-31
Montos por año
Primer período de cada año
Año
Primer periodo
Primer monto
Monto en precios reales
2020
mar. 2020
8500
2781.86
2021
ene. 2021
10293
2563.59
2022
ene. 2022
16000
2644.49
2023
ene. 2023
32714
2719.42
LS0tDQp0aXRsZTogIkVsIOKAnFBvdGVuY2lhciBUcmFiYWpv4oCdIGVuIGRhdG9zLiBNaXJhZGFzIHJlbGFjaW9uYWxlcyBlbnRyZSBjb25jZXBjaW9uZXMgeSBuw7ptZXJvcyBwYXJhIGNvbXByZW5kZXIgc3UgY29uc3RpdHVjacOzbiINCmF1dGhvcjogICJDeW50aGlhIEZlcnJhcmkgTWFuZ28geSBBcmlhbmEgQmFyZGF1aWwiDQpkYXRlOiAiYHIgU3lzLkRhdGUoKWAiDQpsYW5nOiAiZXMiDQpvdXRwdXQ6DQogIHJtZGZvcm1hdHM6OmRvd25jdXRlOg0KICAgIGxpZ2h0Ym94OiBUUlVFDQogICAgaGlnaGxpZ2h0OiB0YW5nbw0KICAgIHRvYzogMw0KICAgIG51bWJlci1zZWN0aW9uczogVFJVRQ0KICAgIGNvZGUtZm9sZGluZzogaGlkZQ0KICAgIGNvZGVfZG93bmxvYWQ6IFRSVUUNCmVkaXRvcl9vcHRpb25zOiANCiAgbWFya2Rvd246IA0KICAgIHdyYXA6IDcyDQotLS0NCg0KYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9DQprbml0cjo6b3B0c19jaHVuayRzZXQod2FybmluZz1GQUxTRSwgbWVzc2FnZT1GQUxTRSwgZWNobyA9IEZBTFNFKQ0KbGlicmFyeSh0aWR5dmVyc2UpDQpsaWJyYXJ5KGphbml0b3IpDQpsaWJyYXJ5KHdhZmZsZSkNCmxpYnJhcnkocGxvdGx5KQ0KbGlicmFyeShzZikNCmxpYnJhcnkoc3RyaW5ncikNCmxpYnJhcnkobHVicmlkYXRlKQ0KbGlicmFyeShnZW9BcikNCmxpYnJhcnkoZ2dyZXBlbCkNCmxpYnJhcnkoZ3QpDQpsaWJyYXJ5KHNjYWxlcykNCmxpYnJhcnkocmVhZHhsKQ0KDQpvcHRpb25zKHNjaXBlbj05OTkpDQpgYGANCg0KIyBSZXN1bHRhZG9zDQoNCiMjIFBlcmZpbCBkZSBsb3MgeSBsYXMgdGl0dWxhcmVzIGRlbCBwcm9ncmFtYQ0KDQpFbiBlc3RlIGFwYXJ0YWRvLCBjYXJhY3Rlcml6YW1vcyBlbCBwZXJmaWwgZGUgbG9zIHkgbGFzIHRpdHVsYXJlcyB0ZW5pZW5kbyBlbiBjdWVudGEgbGEgZWRhZCwgZWwgZ8OpbmVybyB5IGxhIG5hY2lvbmFsaWRhZC4gRW4gbG8gcXVlIHJlZmllcmUg4oCmLi4NCkEgbml2ZWwgcGHDrXMsIGVuIGxhIHNpZ3VpZW50ZSBQaXLDoW1pZGUgUG9ibGFjaW9uYWwgZGUgbG9zIFRpdHVsYXJlcyBkZWwgcG90ZW5jaWFyIHRyYWJham8gZGUgQXJnZW50aW5hICgyMDIwIHkgMjAyMikuDQoNCg0KRWwgODYlIGRlIGxvcyB0aXR1bGFyZXMgZXMgQXJnZW50aW5vLiBFbCA0LjclIG5vIHRpZW5lIGluZm9ybWFjacOzbiBzb2JyZSBsYSBuYWNpb25hbGlkYWQNCg0KPCEtLSBIYWJyw61hIHF1ZSBsaW1waWFybG8uIE5vIHRpZW5lIHNlbnRpZG8gdXNhcmxvIC0tPg0KDQojIyMgR8OpbmVybyB5IHNleG8gey50YWJzZXR9DQoNCiMjIyMgVG90YWwgcGFpcw0KYGBge3J9DQoNCiN0aXR1bGFyZXMgc2UgcHVlZGVuIHNhY2FyIGRhdG9zIGRlbCBwZXJmaWwgZGUgbGEgcGVyc29uYSAoc2V4bywgZWRhZCB5IG11bmljaXBpbykNCg0KdGl0dWxhcmVzX3BlcnNvbmFzIDwtIHJlYWRfY3N2KCJkYXRhL3BvdGVuY2lhci10cmFiYWpvLWxpc3RhZG8tdGl0dWxhcmVzLTIwMjItMTAtMDEuY3N2IikNCg0KIyBTZXhvDQpiYXNlX3NleG8gPC0gdGl0dWxhcmVzX3BlcnNvbmFzIHw+DQogICMgSW1wdXRvIHNleG8gYSBnw6luZXJvIGVuIGxvcyBjYXNvcyBlbiBsb3MgcXVlIG5vIGhheSB2YWxvcmVzDQogIG11dGF0ZShnZW5lcm8gPSBpZmVsc2UoaXMubmEoZ2VuZXJvKSwgc2V4bywgZ2VuZXJvKSwNCiAgICAgICAgIGdlbmVybyA9aWZlbHNlKGdlbmVybyA9PSAiRiIsICJNdWplciIsIGlmZWxzZShnZW5lcm8gPT0gIk0iLCAiVmFyw7NuIiwgZ2VuZXJvKSkpDQoNCg0KIyBNdWVzdHJvIGxhIGRpc3RyaWJ1Y2nDs24gZGVsIGfDqW5lcm8NCnRhYmxhX2dlbmVybyA8LSBiYXNlX3NleG8gfD4gDQogIHRhYnlsKGdlbmVybykgfD4gDQogIGFycmFuZ2UoZGVzYyhuKSkgICAlPiUNCiAgYWRvcm5fdG90YWxzIHw+IA0KICBtdXRhdGUocGVyY2VudCA9IHByaW50KHBhc3RlKHJvdW5kKHBlcmNlbnQqMTAwLDIpLCAiJSIpKSkgfD4gDQogIHJlbmFtZSgNCiAgICAiQ2FudGlkYWQiID0gbiwNCiAgICAiUG9yY2VudGFqZSIgPSBwZXJjZW50LA0KICAgICJHw6luZXJvIiA9IGdlbmVybw0KICApIHw+IA0KICBndCgpICU+JQ0KICB0YWJfaGVhZGVyKA0KICAgIHRpdGxlID0gIkRpc3RyaWJ1Y2nDs24gZGVsIEfDqW5lcm8gZW4gQXJnZW50aW5hIiwNCiAgICBzdWJ0aXRsZSA9ICJEYXRvcyBkZSBnw6luZXJvIHkgZnJlY3VlbmNpYSINCiAgKSAlPiUNCiAgZm10X251bWJlcigNCiAgICBjb2x1bW5zID0gYyhDYW50aWRhZCksDQogICAgZGVjaW1hbHMgPSAwKSB8PiANCiAgZm10X251bWJlcigNCiAgICBjb2x1bW5zID0gYyhQb3JjZW50YWplKSwNCiAgICBkZWNpbWFscyA9IDIpDQoNCiNtdWVzdHJvDQp0YWJsYV9nZW5lcm8NCg0KIyBHdWFyZG8gdGFibGENCmd0c2F2ZSh0YWJsYV9nZW5lcm8sZmlsZW5hbWUgPSAiZ3JhZmljb3MvZGlzdHJpYnVjaW9uX2dlbmVyby5odG1sIikNCg0KIyBCb3Jybw0Kcm0odGFibGFfZ2VuZXJvKQ0KDQojUG9yY2VudGFqZSBkZSBkaXNjaWRlbmNpYXMNCnByaW50KHBhc3RlKDI4NjcrMTA4Nis3MjErNDM3LCAiY29ycmVzcG9uZGVuIGEgZGlzaWRlbmNpYXMuIEVzIGRlY2lyLCBlbCIsIChyb3VuZCgoKDI4NjcrMTA4Nis3MjErNDM3KS8xNTg2Njc2KSoxMDAsMikpLCIlIikpDQoNCg0KYGBgDQoNCiMjIyMgUHJvdmluY2lhIGRlIGJ1ZW5vcyBhaXJlcyANCg0KRGlzdHJpYnVjacOzbiBkZWwgZ8OpbmVybyBlbiBQQkENCmBgYHtyfQ0KYmFzZV9zZXhvIHw+DQogIGZpbHRlcihwcm92aW5jaWFfaWQgPT0gIjA2IikgJT4lIA0KICB0YWJ5bChnZW5lcm8pIHw+IA0KICBhcnJhbmdlKGRlc2MobikpICAgJT4lDQogIGFkb3JuX3RvdGFscyB8PiANCiAgbXV0YXRlKHBlcmNlbnQgPSBwcmludChwYXN0ZShyb3VuZChwZXJjZW50KjEwMCwyKSwgIiUiKSkpIHw+IA0KICByZW5hbWUoDQogICAgIkNhbnRpZGFkIiA9IG4sDQogICAgIlBvcmNlbnRhamUiID0gcGVyY2VudCwNCiAgICAiR8OpbmVybyIgPSBnZW5lcm8NCiAgKSB8PiANCiAgZ3QoKSAlPiUNCiAgdGFiX2hlYWRlcigNCiAgICB0aXRsZSA9ICJEaXN0cmlidWNpw7NuIGRlbCBHw6luZXJvIGVuIEJ1ZW5vcyBBaXJlcyIsDQogICAgc3VidGl0bGUgPSAiRGF0b3MgZGUgZ8OpbmVybyB5IGZyZWN1ZW5jaWEiDQogICkgJT4lDQogIGZtdF9udW1iZXIoDQogICAgY29sdW1ucyA9IGMoQ2FudGlkYWQpLA0KICAgIGRlY2ltYWxzID0gMCkgfD4gDQogIGZtdF9udW1iZXIoDQogICAgY29sdW1ucyA9IGMoUG9yY2VudGFqZSksDQogICAgZGVjaW1hbHMgPSAyKQ0KYGBgDQoNCiMjIyBQaXLDoW1pZGUgZGVtb2dyw6FmaWNhIHsudGFic2V0fQ0KDQojIyMjIEFyZ2VudGluYQ0KYGBge3J9DQoNCiMgQ3JlbyBlbCByYW5nbyBldGFyaW8gcGFyYSBoYWNlciBsYSBwaXJhbWlkZSBwb2JsYWNpb25hbA0KdGl0dWxhcmVzX3BlcnNvbmFzIDwtIHRpdHVsYXJlc19wZXJzb25hcyB8PiANCiAgZmlsdGVyKCFpcy5uYShlZGFkKSkgfD4gDQogIG11dGF0ZShyYW5nb19ldGFyaW8gPSBjYXNlX3doZW4oDQogICAgICBlZGFkIDwgMjUgfiAiMTgtMjQiLA0KICAgICAgZWRhZCA8IDM1IH4gIjI1LTM0IiwNCiAgICAgIGVkYWQgPCA0NSB+ICIzNS00NCIsDQogICAgICBlZGFkIDwgNTUgfiAiNDUtNTQiLA0KICAgICAgZWRhZCA8IDY1IH4gIjU1LTY0IiwNCiAgICAgIGVkYWQgPj0gNjUgfiAiNjUtNzIiDQogICAgKSwNCiAgICByYW5nb19ldGFyaW8gPSBmYWN0b3IoDQogICAgICByYW5nb19ldGFyaW8sDQogICAgICBsZXZlbHMgPSBjKCIxOC0yNCIsDQogICAgICAgICAgICAgICAgICIyNS0zNCIsDQogICAgICAgICAgICAgICAgICIzNS00NCIsDQogICAgICAgICAgICAgICAgICI0NS01NCIsDQogICAgICAgICAgICAgICAgICI1NS02NCIsDQogICAgICAgICAgICAgICAgICI2NS03MiINCiAgICAgICAgICAgICAgICAgKQ0KICAgICkNCiAgKQ0KDQojZXNxdWlzc2U6OmVzcXVpc3Nlcih4KQ0KDQoNCg0KDQojIEFybW8gbGEgcGlyYW1pZGUNCg0KcGlyYW1pZGVfbmFjIDwtIHRpdHVsYXJlc19wZXJzb25hcyB8Pg0KICBncm91cF9ieShyYW5nb19ldGFyaW8sIHNleG8pIHw+DQogIHN1bW1hcmlzZShOID0gbigpKSB8Pg0KICBtdXRhdGUoTiA9IGlmZWxzZShzZXhvID09ICJNIiwtTiwgTikpIHw+DQogIHJlbmFtZSgNCiAgICAiUmFuZ28gZXRhcmlvIiA9IHJhbmdvX2V0YXJpbywNCiAgICAic2V4byIgPSBzZXhvLA0KICAgICJDYW50aWRhZCBkZSB0aXR1bGFyZXMiID0gTg0KICApIHw+IA0KICBnZ3Bsb3QoKSArDQogIGFlcyh4ID0gYFJhbmdvIGV0YXJpb2AsIHkgPSBgQ2FudGlkYWQgZGUgdGl0dWxhcmVzYCwgZmlsbCA9IHNleG8pICsNCiAgZ2VvbV9jb2woKSArDQogIHNjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcyA9IGMoRiA9ICIjYjIyOTg3IiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNID0gIiMyOTg3YjIiKSkgKw0KIGxhYnMoeCA9ICIgIiwgeSA9ICIgIiwgdGl0bGUgPSAiUGlyYW1pZGUgcG9ibGFjaW9uYWwgZGUgQXJnZW50aW5hIiwNCiAgICAgIHN1YnRpdGxlID0gIlRpdHVsYXJlcyBkZWwgUG90ZW5jaWFyIFRyYWJham8gZW50cmUgZWwgYcOxbyAyMDIwIHkgMjAyMiAoZW4gbWlsZXMpIiwNCiAgICAgIGNhcHRpb24gPSAiRnVlbnRlOiBFbGFib3JhY2nDs24gcHJvcGlhIGVuIGJhc2UgYSBkYXRvcyBhYmllcnRvcyBkZWwgTWluaXN0ZXJpbyBkZSBEZXNhcnJvbGxvIFNvY2lhbCBkZSBsYSBOYWNpw7NuIiwgDQogZmlsbCA9ICJTZXhvIikgICsNCiAgY29vcmRfZmxpcCgpICsNCiAgZ2d0aGVtZXM6OnRoZW1lX3BhbmRlcigpKw0KICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAicmlnaHQiLA0KICAgIHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE2TCwgZmFjZSA9ICJib2xkIiwgaGp1c3QgPSAwLjUpLA0KICAgIHBsb3Quc3VidGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE0TCwgZmFjZSA9ICJpdGFsaWMiLCBoanVzdCA9IDAuNSksDQogICAgcGxvdC5jYXB0aW9uID0gZWxlbWVudF90ZXh0KHNpemUgPSA4TCksDQogICAgYXhpcy50aXRsZS55ID0gZWxlbWVudF90ZXh0KHNpemUgPSA5TCksDQogICAgYXhpcy50aXRsZS54ID0gZWxlbWVudF90ZXh0KHNpemUgPSA5TCksDQogICAgdGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID04TCkNCiAgKSArDQogIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBjKCAtNTAwMDAsIC0xMDAwMDAsIC0xNTAwMDAsIC0yMDAwMDAsIC0yNTAwMDAsIC0zMDAwMDAsIC0zNTAwMDAsMCwgNTAwMDAsIDEwMDAwMCwgMTUwMDAwLCAyMDAwMDAsIDI1MDAwMCwgMzAwMDAwLCAzNTAwMDApLA0KICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYyg1MCwgMTAwLCAxNTAsIDIwMCwgMjUwLCAzMDAsIDM1MCwwLCA1MCwgMTAwLCAxNTAsIDIwMCwgMjUwLCAzMDAsIDM1MCksDQogICAgICAgICAgICAgICAgICAgICBsaW1pdHMgPSBjKC0zNTAwMDAsMzUwMDAwKQ0KICAgICAgICAgICAgICAgICAgICApIA0KDQpnZ3NhdmUocGxvdCA9IHBpcmFtaWRlX25hYywgImdyYWZpY29zL3BpcmFtaWRlLWFyZ2VudGluYS5wbmciKQ0KDQpwbG90bHlfbmFjIDwtIGdncGxvdGx5KHBpcmFtaWRlX25hYykNCg0KcGxvdGx5X25hYw0Kcm0ocGlyYW1pZGVfbmFjKQ0KDQojR3VhcmRvIGh0bWwNCg0KYGBgDQoNCiMjIyMgUHJvdmluY2lhIGRlIGJ1ZW5vcyBhaXJlcw0KDQpgYGB7cn0NCg0KI1BpcmFtaWRlIGRlIGxhIHByb3ZpbmNpYSBkZSBidWVub3MgYWlyZXMNCnRpdHVsYXJlc19wYmEgPC0gdGl0dWxhcmVzX3BlcnNvbmFzIHw+DQogIGZpbHRlcihwcm92aW5jaWFfaWQgPT0gIjA2IikgfD4gDQogIGdyb3VwX2J5KHJhbmdvX2V0YXJpbywgc2V4bykgfD4NCiAgc3VtbWFyaXNlKE4gPSBuKCkpIHw+DQogIG11dGF0ZShOID0gaWZlbHNlKHNleG8gPT0gIk0iLC1OLCBOKSkgfD4NCiAgcmVuYW1lKA0KICAgICJSYW5nbyBldGFyaW8iID0gcmFuZ29fZXRhcmlvLA0KICAgICJzZXhvIiA9IHNleG8sDQogICAgIkNhbnRpZGFkIGRlIHRpdHVsYXJlcyIgPSBODQogICkgDQoNCiMgQXJtbyBwaXJhbWlkZSBkZSBwcm92aW5jaWEgZGUgYnVlbm9zIGFpcmVzDQpwaXJhbWlkYV9wYmEgPC0gdGl0dWxhcmVzX3BiYSB8PiANCiAgZ2dwbG90KCkgKw0KICBhZXMoeCA9IGBSYW5nbyBldGFyaW9gLCB5ID0gYENhbnRpZGFkIGRlIHRpdHVsYXJlc2AsIGZpbGwgPSBzZXhvKSArDQogIGdlb21fY29sKCkgKw0KICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXMgPSBjKEYgPSAiI2IyMjk4NyIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTSA9ICIjMjk4N2IyIikpICsNCiBsYWJzKHggPSAiICIsIHkgPSAiICIsIHRpdGxlID0gIlBpcmFtaWRlIHBvYmxhY2lvbmFsIGRlIEJ1ZW5vcyBBaXJlcyIsDQogICAgICBzdWJ0aXRsZSA9ICJUaXR1bGFyZXMgZGVsIFBvdGVuY2lhciBUcmFiYWpvIGVudHJlIGVsIGHDsW8gMjAyMCB5IDIwMjIgKGVuIG1pbGVzKSIsDQogICAgICBjYXB0aW9uID0gIkZ1ZW50ZTogRWxhYm9yYWNpw7NuIHByb3BpYSBlbiBiYXNlIGEgZGF0b3MgYWJpZXJ0b3MgZGVsIE1pbmlzdGVyaW8gZGUgRGVzYXJyb2xsbyBTb2NpYWwgZGUgbGEgTmFjacOzbiIsIA0KIGZpbGwgPSAiU2V4byIpICArDQogIGNvb3JkX2ZsaXAoKSArDQogIGdndGhlbWVzOjp0aGVtZV9wYW5kZXIoKSsNCiAgdGhlbWUobGVnZW5kLnBvc2l0aW9uID0gInJpZ2h0IiwNCiAgICBwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNkwsIGZhY2UgPSAiYm9sZCIsIGhqdXN0ID0gMC41KSwNCiAgICBwbG90LnN1YnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNEwsIGZhY2UgPSAiaXRhbGljIiwgaGp1c3QgPSAwLjUpLA0KICAgIHBsb3QuY2FwdGlvbiA9IGVsZW1lbnRfdGV4dChzaXplID0gOEwpLA0KICAgIGF4aXMudGl0bGUueSA9IGVsZW1lbnRfdGV4dChzaXplID0gOUwpLA0KICAgIGF4aXMudGl0bGUueCA9IGVsZW1lbnRfdGV4dChzaXplID0gOUwpLA0KICAgIHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9OEwpDQogICkgKw0KICBzY2FsZV95X2NvbnRpbnVvdXMoYnJlYWtzID0gYyggLTUwMDAwLCAtMTAwMDAwLCAtMTUwMDAwLCAtMjAwMDAwLCAwLCA1MDAwMCwgMTAwMDAwLCAxNTAwMDAsIDIwMDAwMCksDQogICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKDUwLCAxMDAsIDE1MCwgMjAwLCAwLCA1MCwgMTAwLCAxNTAsIDIwMCksDQogICAgICAgICAgICAgICAgICAgICBsaW1pdHMgPSBjKC0yMDAwMDAsMjAwMDAwKQ0KICAgICAgICAgICAgICAgICAgICApIA0KZ2dzYXZlKHBsb3Q9IHBpcmFtaWRhX3BiYSwgImdyYWZpY29zL3BpcmFtaWRlLWJhaXJlcy5wbmciKQ0KDQojIE11ZXN0cm8NCmdncGxvdGx5KHBpcmFtaWRhX3BiYSkNCg0Kcm0ocGlyYW1pZGFfcGJhKQ0KDQpgYGANCg0KIyMjIFRpdHVsYXJlcyBwb3IgcHJvdmluY2lhDQoNCmBgYHtyfQ0KI01vZGlmaWNvIGVycm9yZXMgZGUgbm9tYnJlcw0KdGl0dWxhcmVzX3BlcnNvbmFzIDwtIHRpdHVsYXJlc19wZXJzb25hcyB8Pg0KICBtdXRhdGUocHJvdmluY2lhID0gaWZlbHNlKHByb3ZpbmNpYSA9PSAiQ8ODwrNyZG9iYSIsICJDw7NyZG9iYSIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKHByb3ZpbmNpYSA9PSAiRW50cmUgUsODwq1vcyIsIkVudHJlIFLDrW9zIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZlbHNlKHByb3ZpbmNpYSA9PSAiVHVjdW3Dg8KhbiIsICJUdWN1bcOhbiIsIHByb3ZpbmNpYSkpKSkgDQoNCiMgQ3JlbyB0YWJsYQ0KdGl0dWxhcmVzX3BlcnNvbmFzIHw+IA0KICB0YWJ5bChwcm92aW5jaWEpIHw+IA0KICBhcnJhbmdlKGRlc2MobikpICU+JQ0KICBhZG9ybl90b3RhbHMgfD4gDQogIG11dGF0ZShwZXJjZW50ID0gcHJpbnQocGFzdGUocm91bmQocGVyY2VudCoxMDAsMiksICIlIikpKSB8PiANCiAgcmVuYW1lKA0KICAgICJDYW50aWRhZCIgPSBuLA0KICAgICJQb3JjZW50YWplIiA9IHBlcmNlbnQsDQogICAgIlByb3ZpbmNpYSIgPSBwcm92aW5jaWENCiAgKSB8PiANCiAgZ3QoKSAlPiUNCiAgdGFiX2hlYWRlcigNCiAgICB0aXRsZSA9ICJEaXN0cmlidWNpw7NuIHBvciBQcm92aW5jaWEiLA0KICAgIHN1YnRpdGxlID0gIkNhbnRpZGFkIHkgUG9yY2VudGFqZSBkZSB0aXR1bGFyZXMgIg0KICApICU+JQ0KICBmbXRfbnVtYmVyKA0KICAgIGNvbHVtbnMgPSBjKENhbnRpZGFkKSwNCiAgICBkZWNpbWFscyA9IDApIHw+IA0KICBmbXRfbnVtYmVyKA0KICAgIGNvbHVtbnMgPSBjKFBvcmNlbnRhamUpLA0KICAgIGRlY2ltYWxzID0gMikNCg0KDQpgYGANCg0KPCEtLSBTZSBwb2Ryw61hIGhhY2VyIGNvbiBsYXMgcHJveWVjY2lvbmVzIGRlbCBpbmRlYyBlbCAlIGRlIHBvYmxhY2nDs24gcXVlIGxvIHJlY2liZSBwYXJhIHZlciBwb3JjZW50dWFsbWVudGUgY3VhbnRvIHJlcHJlc2VudGEgLS0+DQoNCg0KIyMgRXZvbHVjacOzbiBkZSBsb3MgdGl0dWxhcmVzIC8gcGVybWFuZW5jaWEgZW4gZWwgcHJvZ3JhbWENCg0KVGl0dWxhcmVzIHBvciBwZXJpb2RvIHkganVyaXNkaWNjacOzbiBncsOhZmljbyBsaW5lYWwNCg0KYGBge3J9DQojdGl0dWxhcmVzIHBvciBwZXJpb2RvIHkganVyaXNkaWNjaW9uIChtdW5pY2lwaW8pDQp0b3RhbF90aXR1bGFyZXMgPC0gcmVhZF9jc3YoImh0dHBzOi8vZGF0b3NhYmllcnRvcy5kZXNhcnJvbGxvc29jaWFsLmdvYi5hci9kYXRhc2V0L2Q0NTY4N2MwLWYyYmEtNDFkOS05OTg5LTBhZDk3OTkzMDhhZS9yZXNvdXJjZS9jNGNhYTcyNC1kZmJiLTRhYWMtYmZlNy0yMTY5ZjQxNTRiYzUvZG93bmxvYWQvcG90ZW5jaWFyLXRyYWJham8tdGl0dWxhcmVzLWFjdGl2b3MtMjAyMi0xMC0wMS5jc3YiKQ0KIyBUaXR1bGFyZXMgcG9yIHBlcmlvZG8geSBqdXJpc2RpY2Npw7NuIGdyw6FmaWNvIGxpbmVhbA0KDQp0aXRfYXJnZW50aW5hIDwtIHRvdGFsX3RpdHVsYXJlcyB8PiANCiAgZ3JvdXBfYnkocGVyaW9kbykgfD4gDQogIHN1bW1hcmlzZSh0b3RhbF90aXR1bGFyZXMgPSBzdW0odGl0dWxhcmVzKSwNCiAgICAgICAgICAgIGp1cmlzZGljY2lvbiA9ICJBcmdlbnRpbmEiKSANCg0KZGZfdGVuZGVuY2lhIDwtIHRvdGFsX3RpdHVsYXJlcyB8PiANCiAgZmlsdGVyKHByb3ZpbmNpYV9pZCA9PSAiMDYiKSB8PiANCiAgZ3JvdXBfYnkocGVyaW9kbykgfD4gDQogIHN1bW1hcmlzZSh0b3RhbF90aXR1bGFyZXMgPSBzdW0odGl0dWxhcmVzKSwNCiAgICAgICAgICAgIGp1cmlzZGljY2lvbiA9ICJCdWVub3MgQWlyZXMiKSB8PiANCiAgZnVsbF9qb2luKHRpdF9hcmdlbnRpbmEpDQoNCg0KbGluZWEgPC0gZ2dwbG90KGRmX3RlbmRlbmNpYSkgKw0KICBhZXMoeCA9IHBlcmlvZG8sIHkgPSB0b3RhbF90aXR1bGFyZXMsIGNvbG91ciA9IGp1cmlzZGljY2lvbikgKw0KICBnZW9tX2xpbmUoKSArDQogIGdlb21fcG9pbnQoKSArDQogIHNjYWxlX2NvbG9yX2JyZXdlcihwYWxldHRlID0gIlNldDIiLA0KICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aW9uID0gMSkgKw0KICBsYWJzKA0KICAgIHggPSAiICIsDQogICAgeSA9ICIgIiwNCiAgICB0aXRsZSA9ICJFdm9sdWNpw7NuIGRlIGxhIGNhbnRpZGFkIGRlIHRpdHVsYXJlcyAiLA0KICAgIHN1YnRpdGxlID0gIkRlbCB0b3RhbCBkZWwgcGHDrXMgeSBkZSBsYSBQcm92aW5jaWEgZGUgQnVlbm9zIEFpcmVzICgyMDIwLTIwMjIpIiwNCiAgICBjYXB0aW9uID0gIkZ1ZW50ZTogRWxhYm9yYWNpw7NuIHByb3BpYSBlbiBiYXNlIGEgZGF0b3MgYWJpZXJ0b3MgZGVsIE1EU04iLA0KICAgIGNvbG9yID0gIkp1cmlzZGljY2nDs24iDQogICkgKw0KICBnZ3RoZW1lczo6dGhlbWVfcGFuZGVyKCkgKw0KICB0aGVtZSgNCiAgICBsZWdlbmQucG9zaXRpb24gPSAidG9wIiwNCiAgICBwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNUwsIGZhY2UgPSAiYm9sZCIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoanVzdCA9IDAuNSksDQogICAgcGxvdC5zdWJ0aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTRMLCBmYWNlID0gIml0YWxpYyIsIGhqdXN0ID0gMC41KQ0KICApICsNCiAgc2NhbGVfeF9kYXRlKGRhdGVfbGFiZWxzID0gIiViLSV5IiwgZGF0ZV9icmVha3MgPSAiMyBtb250aHMiKSArDQogIHNjYWxlX3lfY29udGludW91cyhsYWJlbHMgPSBjb21tYSkNCg0KZ2dzYXZlKHBsb3QgPSBsaW5lYSwgImdyYWZpY29zL2xpbmVhLnBuZyIpDQoNCmdncGxvdGx5KGxpbmVhKQ0KYGBgDQoNCg0KIyMgRGlzdHJpYnVjacOzbiBnZW9ncsOhZmljYSANCg0KDQoNCmBgYHtyfQ0Kcm0oYmFzZV9zZXhvLCBkZl90ZW5kZW5jaWEsIHRpdHVsYXJlc19wYmEpDQoNCiMgdWx0aW1vIGNvYnJvIGRlbCB0aXR1bGFyIChzZSBwb2RyaWEgbWFwZWFyKQ0KdGl0dWxhcmVzX2FubyA8LSByZWFkX2NzdigiaHR0cHM6Ly9kYXRvc2FiaWVydG9zLmRlc2Fycm9sbG9zb2NpYWwuZ29iLmFyL2RhdGFzZXQvZDQ1Njg3YzAtZjJiYS00MWQ5LTk5ODktMGFkOTc5OTMwOGFlL3Jlc291cmNlL2M1YzkyNWUwLTdjZTAtNDFlNS1iM2ZmLThlYmI1MWQ0YmU3Mi9kb3dubG9hZC9wb3RlbmNpYXItdHJhYmFqby10aXR1bGFyZXMtMjAyMi0xMC0wMS5jc3YiKQ0KDQoNCiMgQXJtbyBlbCBncmFmaWNvIGRlIHRpdHVsYXJlcyB0b3RhbGVzDQogDQptYXBhX3Byb3ZpbmNpYSA8LSB0aXR1bGFyZXNfYW5vIHw+DQogIG11dGF0ZShhbm8gPSB5ZWFyKHBlcmlvZG8pKSB8PiANCiAgZ3JvdXBfYnkocHJvdmluY2lhX2lkLCBhbm8pIHw+IA0KICBzdW1tYXJpc2UodG90X3RpdHVsYXJlcz0gc3VtKHRpdHVsYXJlcykpDQoNCiNhZ3J1cG8gcG9yIGHDsW8NCm1hcGFfcHJvdmluY2lhIDwtIG1hcGFfcHJvdmluY2lhIHw+DQogIGdyb3VwX2J5KGFubykgfD4gDQogIG11dGF0ZSh0b3RfcHJvcCA9ICh0b3RfdGl0dWxhcmVzL3N1bSh0b3RfdGl0dWxhcmVzKSkqMTAwKQ0KDQojIEFybW8gdW5hIHRhYmxhIA0KDQojIFZlY3RvcmVzIGNvbiBub21icmVzIGRlIHByb3ZpbmNpYXMgeSBjw7NkaWdvcw0Kbm9tYnJlc19wcm92aW5jaWFzIDwtIGMoDQogICJDaXVkYWQgQXV0w7Nub21hIGRlIEJ1ZW5vcyBBaXJlcyIsDQogICJCdWVub3MgQWlyZXMiLA0KICAiQ2F0YW1hcmNhIiwNCiAgIkPDs3Jkb2JhIiwNCiAgIkNvcnJpZW50ZXMiLA0KICAiQ2hhY28iLA0KICAiQ2h1YnV0IiwNCiAgIkVudHJlIFLDrW9zIiwNCiAgIkZvcm1vc2EiLA0KICAiSnVqdXkiLA0KICAiTGEgUGFtcGEiLA0KICAiTGEgUmlvamEiLA0KICAiTWVuZG96YSIsDQogICJNaXNpb25lcyIsDQogICJOZXVxdcOpbiIsDQogICJSw61vIE5lZ3JvIiwNCiAgIlNhbHRhIiwNCiAgIlNhbiBKdWFuIiwNCiAgIlNhbiBMdWlzIiwNCiAgIlNhbnRhIENydXoiLA0KICAiU2FudGEgRmUiLA0KICAiU2FudGlhZ28gZGVsIEVzdGVybyIsDQogICJUdWN1bcOhbiIsDQogICJUaWVycmEgZGVsIEZ1ZWdvLCBBbnTDoXJ0aWRhIGUgSXNsYXMgZGVsIEF0bMOhbnRpY28gU3VyIg0KKQ0KDQpwcm92aW5jaWFfaWQgPC0gYygNCiAgIjAyIiwgIjA2IiwgIjEwIiwgIjE0IiwgIjE4IiwgIjIyIiwgIjI2IiwgIjMwIiwgIjM0IiwgIjM4IiwgIjQyIiwgIjQ2IiwNCiAgIjUwIiwgIjU0IiwgIjU4IiwgIjYyIiwgIjY2IiwgIjcwIiwgIjc0IiwgIjc4IiwgIjgyIiwgIjg2IiwgIjkwIiwgIjk0Ig0KKQ0KDQojVW5vDQp0YWJsYV9jb2QgPC0gZGF0YS5mcmFtZShwcm92aW5jaWFfaWQsbm9tYnJlc19wcm92aW5jaWFzKQ0KDQptYXBhX3Byb3ZpbmNpYSA8LSBtYXBhX3Byb3ZpbmNpYSB8PiANCiAgbGVmdF9qb2luKHRhYmxhX2NvZCkNCg0KdGFibGEgPC0gbWFwYV9wcm92aW5jaWEgfD4gDQogIHNlbGVjdCgtcHJvdmluY2lhX2lkKSB8PiANCiAgcGl2b3Rfd2lkZXIobmFtZXNfZnJvbSA9IGFubywgdmFsdWVzX2Zyb20gPSBjKHRvdF90aXR1bGFyZXMsIHRvdF9wcm9wKSkgfD4gDQogIHJlbmFtZSgiUHJvdmluY2lhcyI9IG5vbWJyZXNfcHJvdmluY2lhcywNCiAgICAgICAgICJQb3JjZW50YWplIDIwMjAiID0gdG90X3Byb3BfMjAyMCwNCiAgICAgICAgICJQb3JjZW50YWplIDIwMjEiID0gdG90X3Byb3BfMjAyMSwNCiAgICAgICAgICJQb3JjZW50YWplIDIwMjIiID0gdG90X3Byb3BfMjAyMiwNCiAgICAgICAgICJUaXR1bGFyZXMgMjAyMCIgPSB0b3RfdGl0dWxhcmVzXzIwMjAsDQogICAgICAgICAiVGl0dWxhcmVzIDIwMjEiID0gdG90X3RpdHVsYXJlc18yMDIxLA0KICAgICAgICAgIlRpdHVsYXJlcyAyMDIyIiA9IHRvdF90aXR1bGFyZXNfMjAyMiwpIHw+IA0KICBhZG9ybl90b3RhbHMoKSANCg0KdGFibGEgfD4NCiAgbXV0YXRlKGBQb3JjZW50YWplIDIwMjBgID0gcGFzdGUwKHJvdW5kKGBQb3JjZW50YWplIDIwMjBgLDIpLCIlIiksDQogICAgICAgICBgUG9yY2VudGFqZSAyMDIxYCA9IHBhc3RlMChyb3VuZChgUG9yY2VudGFqZSAyMDIxYCwyKSwiJSIpLA0KICAgICAgICAgYFBvcmNlbnRhamUgMjAyMmAgPSBwYXN0ZTAocm91bmQoYFBvcmNlbnRhamUgMjAyMmAsMiksIiUiKSkgJT4lDQogICNFbGltaW5vIGxhcyBjYW50aWRhZGVzIHBvcnF1ZSBubyB0aWVuZSBzZW50aWRvDQogICNzZWxlY3QoLWBUaXR1bGFyZXMgMjAyMGAsLWBUaXR1bGFyZXMgMjAyMWAsLWBUaXR1bGFyZXMgMjAyMmApICU+JSANCiAgZ3QoKSU+JQ0KICB0YWJfaGVhZGVyKA0KICAgIHRpdGxlID0gIlBvcmNlbnRhamUgZGUgdGl0dWxhcmVzIHBvciBwcm92aW5jaWEgeSBhw7FvIiwNCiAgICBzdWJ0aXRsZSA9ICJTb2JyZSBlbCB0b3RhbCBkZSB0aXR1bGFyZXMiDQogICkgDQoNCg0KI1RhYmxhIHBhcmEgcG9uZXIgZW4gZWwgdHJhYmFqbyANCg0Kd3JpdGV4bDo6d3JpdGVfeGxzeCh0YWJsYSwgImJhc2VzLXBhcmEtY3luL3RpdHVsYXJlc3hwcm92aW5jaWF5YW5vLnhsc3giKQ0KDQoNCg0KDQpgYGANCg0KIyMjIE1hcGEgZW4gZnVuY2nDs24gZGVsICUgcG9ibGFjaW9uYWwgey50YWJzZXR9DQoNCiMjIyMgQXJnZW50aW5hDQpgYGB7cn0NCiMgVHJhaWdvIGVsIG1hcGEgZGUgYXJnZW50aW5hIGNvbiBwcm92aW5jaWFzDQptYXBhX2FyZyA8LSBnZXRfZ2VvKCJBUkdFTlRJTkEiLCBsZXZlbCA9ICJwcm92aW5jaWEiKSB8PiANCiAgcmVuYW1lKCJwcm92aW5jaWFfaWQiID0gY29kcHJvdl9jZW5zbykNCg0KY29kaWdvc19tYXBhIDwtIHNob3dfYXJnX2NvZGVzKHZpZXdlciA9IEZBTFNFLCBuaXZlbCA9ICJwcm92aW5jaWFzIikNCmBgYA0KDQoNCg0KYGBge3J9DQojIFRyYWlnbyBjc3YgcXVlIGFybWFtb3MgZW4gbGEgY2xhc2UgZGUgc2FsdWQgY29uIFINCnBvYmxhY2lvbl9pbmRlYyA8LSByZWFkX2NzdigiZGF0YS9yZXN1bHRhZG8uY3N2IikNCg0KIyBNZSB0cmFpZ28gbG9zIHRvdGFsZXMgcG9ibGFjaW9uYWxlcw0KcG9ibGFjaW9uIDwtIHBvYmxhY2lvbl9pbmRlYyB8PiANCiAgZmlsdGVyKCFqdXJpID09ICIwMSIpIHw+IA0KICAjIEHDsW8gMjAyMiB5IDIwMjAgcGFyYSB2ZXIgbGFzIGRvcyBmb3Rvcw0KICBmaWx0ZXIoYW5vID09IDIwMjIgfCBhbm8gPT0gMjAyMCkgfD4gDQogICMgVG90YWwgcG9yIHNlbw0KICBmaWx0ZXIoc2V4b19ub21icmUgPT0gIkFtYm9zIHNleG9zIikgfD4NCiAgZ3JvdXBfYnkoYW5vLGp1cmksIGp1cmlfbm9tYnJlKSB8PiANCiAgc3VtbWFyaXNlKHBvYmxhY2lvbiA9IHN1bShwb2JsYWNpb24pKSB8PiANCiAgI1BhcmEgcG9kZXIgam9pbmVhcg0KICByZW5hbWUoInByb3ZpbmNpYV9pZCIgPSBqdXJpKQ0KDQoNCg0KIyBBcm1hbW9zIGxhIHByb3BvcmNpw7NuIGRlIHRpdHVsYXJlcyBzb2JyZSBsYSBwb2JsYWNpw7NuIHByb3llY3RhZGENCm1hcGFfcHJvdmluY2lhX3BvYiA8LSBtYXBhX3Byb3ZpbmNpYSB8Pg0KICBmaWx0ZXIoYW5vICVpbiUgYygyMDIwLCAyMDIyKSkgfD4gDQogIGxlZnRfam9pbihwb2JsYWNpb24pIHw+IA0KICBncm91cF9ieShhbm8sIHByb3ZpbmNpYV9pZCkgfD4gDQogIG11dGF0ZShwcm9wX3BvbmxhY2lvbmFsID0gKHRvdF90aXR1bGFyZXMvcG9ibGFjaW9uKSkNCg0KDQptYXBhX3Byb3ZpbmNpYV9wb2IkcHJvcF9wb25sYWNpb25hbCA8LSByb3VuZChtYXBhX3Byb3ZpbmNpYV9wb2IkcHJvcF9wb25sYWNpb25hbCoxMDAsMikNCg0KI2d1YXJkbyBleGNlbCkqDQp3cml0ZXhsOjp3cml0ZV94bHN4KG1hcGFfcHJvdmluY2lhX3BvYiwgImJhc2VzLXBhcmEtY3luL3RvdF90aXR1bGFyZXNfcHJvdmluY2lhX2luZGVjLnhsc3giKQ0KDQojVW5vIGNvbiBlbCBtYXBhIA0KbWFwYV9wb2IgPC0gbWFwYV9hcmcgfD4gDQogIGxlZnRfam9pbihtYXBhX3Byb3ZpbmNpYV9wb2IpDQoNCm1hcGFfbmFjIDwtIGdncGxvdChtYXBhX3BvYikgKw0KICBnZW9tX3NmKGFlcyhmaWxsID0gcHJvcF9wb25sYWNpb25hbCkpICsNCiAgZ2VvbV9zZl90ZXh0KA0KICAgIGFlcyhsYWJlbCA9IHBhc3RlMChwcm9wX3BvbmxhY2lvbmFsLCAiJSIpKSwNCiAgICBzaXplID0gMS44LA0KICAgIGZhY2UgPSAiYm9sZCIsDQogICAgY29sb3VyID0gImJsYWNrIiwNCiAgICBoanVzdCA9IDAuNQ0KICApICsNCiAgc2NhbGVfZmlsbF92aXJpZGlzX2Mob3B0aW9uID0gInBsYXNtYSIsDQogICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbiA9IC0xLA0KICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBwZXJjZW50X2Zvcm1hdChzY2FsZSA9IDEpKSArDQogIGdndGhlbWVzOjp0aGVtZV9wYW5kZXIoKSArDQogIGxhYnModGl0bGUgPSAiUG9yY2VudGFqZSBkZSB0aXR1bGFyZXMgcG9yIHByb3ZpbmNpYSIsDQogICAgICAgc3VidGl0bGUgPSAiRW4gYmFzZSBhIHByb3llY2Npb25lcyBkZSBJTkRFQyIsDQogICAgICAgZmlsbCA9ICJQb3JjZW50YWplIikgKw0KICB0aGVtZSgNCiAgICBwbG90LnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNkwsIGZhY2UgPSAiYm9sZCIsIGhqdXN0ID0gMC41KSwNCiAgICBwbG90LnN1YnRpdGxlID0gZWxlbWVudF90ZXh0KHNpemUgPSAxNEwsIGZhY2UgPSAiaXRhbGljIiwgaGp1c3QgPSAwLjUpLA0KICAgIHRleHQgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDEpDQogICkgKw0KICB5bGFiKCIiKSArDQogIHhsYWIoIiIpICsNCiAgZmFjZXRfd3JhcCh2YXJzKGFubykpICAgIyBBw7FhZGUgc2NhbGVzID0gImZyZWUiIHBhcmEgYWp1c3RhciBsYXMgZXNjYWxhcyBkZSBsb3MgZWplcyBlbiBjYWRhIHBhbmVsDQoNCg0KZ2dzYXZlKHBsb3QgPSBtYXBhX25hYywgImdyYWZpY29zL21hcGEtcG9yYy10aXR1bGFyZXMteC1wb2JsYWNpb24ucG5nIikNCg0KcGFyYV90YWJsYSA8LSBtYXBhX3BvYiAlPiUgDQogIGdyb3VwX2J5KGFubykgfD4gDQogIHN1bW1hcmlzZShUaXR1bGFyZXMgPXN1bSh0b3RfdGl0dWxhcmVzKSwNCiAgICAgICAgICAgIFBvYmxhY2lvbiA9c3VtKHBvYmxhY2lvbiksDQogICAgICAgICAgICBQb3JjZW50YWplID0gcGFzdGUwKHJvdW5kKChUaXR1bGFyZXMvUG9ibGFjaW9uKSoxMDAsMSksIiUiKSkgJT4lIA0KICByZW5hbWUoIkHDsW8iID0gYW5vKQ0KDQpwYXJhX3RhYmxhIDwtIGFzLmRhdGEuZnJhbWUocGFyYV90YWJsYSkgJT4lIA0KICBzZWxlY3QoLWdlb21ldHJ5KQ0KDQpwYXJhX3RhYmxhICU+JSANCiAgZ3QoKSAlPiUNCiAgdGFiX2hlYWRlcigNCiAgICB0aXRsZSA9ICJQb3JjZW50YWplIGRlIHRpdHVsYXJlcyBwb3IgYcOxbyIsDQogICAgc3VidGl0bGUgPSAiRW4gYmFzZSBhIHByb3llY2Npb25lcyBwb2JsYWNpb25hbGVzIGRlIElOREVDIg0KICApIA0KDQptYXBhX25hY19pbnRlcmFjdGl2byA8LSBnZ3Bsb3QobWFwYV9wb2IpICsNCiAgZ2VvbV9zZihhZXMoZmlsbCA9IHByb3BfcG9ubGFjaW9uYWwsIHRleHQgPSBwYXN0ZSgiUHJvdmluY2lhOiIsIGp1cmlfbm9tYnJlLCAiPGJyPlBvcmNlbnRhamU6IiwgcHJvcF9wb25sYWNpb25hbCwgIiUiKSkpICsNCiAgc2NhbGVfZmlsbF92aXJpZGlzX2Mob3B0aW9uID0gInBsYXNtYSIsDQogICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbiA9IC0xLA0KICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBwZXJjZW50X2Zvcm1hdChzY2FsZSA9IDEpKSArDQogIGdndGhlbWVzOjp0aGVtZV9wYW5kZXIoKSArDQogIGxhYnModGl0bGUgPSAiUG9yY2VudGFqZSBkZSB0aXR1bGFyZXMgcG9yIHByb3ZpbmNpYSBlbiBiYXNlIGEgcHJveWVjY2lvbmVzIGRlIElOREVDIiwNCiAgICAgICBmaWxsID0gIlBvcmNlbnRhamUiKSArDQogIHRoZW1lKA0KICAgIHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE2TCwgZmFjZSA9ICJib2xkIiwgaGp1c3QgPSAwLjUpLA0KICAgIHBsb3Quc3VidGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE0TCwgZmFjZSA9ICJpdGFsaWMiLCBoanVzdCA9IDAuNSksDQogICAgdGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMSkNCiAgKSArDQogIHlsYWIoIiIpICsNCiAgeGxhYigiIikgKw0KICBmYWNldF93cmFwKHZhcnMoYW5vKSkNCg0KZ2dwbG90bHkobWFwYV9uYWNfaW50ZXJhY3Rpdm8sIHRvb2x0aXAgPSAidGV4dCIpDQpgYGANCg0KDQojIyMjIEJ1ZW5vcyBBaXJlcw0KDQpgYGB7cn0NCiNwYXJhIHZlciBjdWFsIGVzIGVsIGNvZGlnbw0KI2NvZGlnb3NfbWFwYSA8LSBzaG93X2FyZ19jb2Rlcyh2aWV3ZXIgPSBGQUxTRSwgbml2ZWwgPSAicHJvdmluY2lhcyIpDQojIFRyYWlnbyBlbCBtYXBhIGRlIGFyZ2VudGluYSBjb24gcHJvdmluY2lhcw0KbWFwYV9iYSA8LSBnZXRfZ2VvKCJCVUVOT1MgQUlSRVMiLCBsZXZlbCA9ICJkZXBhcnRhbWVudG8iKSANCg0KI1RyYWlnbyBsYSBwcm95ZWNjaW9uIHBvYmxhY2lvbmFsIGRlIElOREVDIHF1ZSBoaWNlIHBhcmEgbGEgbWF0ZXJpYSBkZSBzYWx1ZCBkZSBSIGRlIE1HQUlFDQoNCmJhX2RlcHRvX2luZGVjIDwtIHJlYWRfZXhjZWwoImRhdGEvcHJveWVjY2lvbmVzX2RlcHRvX2luZGVjLnhsc3giKSB8PiANCiAgY2xlYW5fbmFtZXMoKSB8PiANCiAgIyBmaWx0cm8gcG9yIHByb3ZpbmNpYSBkZSBidWVub3MgYWlyZXMNCiAgZmlsdGVyKGp1cmlfY29kaWdvID09ICIwNiIpIHw+IA0KICAjIG1lIHF1ZWRvIGNvbiBsYSBpbmZvIGRlIGFtYm9zIHNleG9zDQogIGZpbHRlcihzZXhvX25vbWJyZSA9PSAiQW1ib3Mgc2V4b3MiKSB8PiANCiAgI0ZpbHRybyBsb3MgYcOxb3MNCiAgZmlsdGVyKGFubyAlaW4lIGMoMjAyMCwgMjAyMSwgMjAyMikpIHw+IA0KICByZW5hbWUoInByb3ZpbmNpYV9pZCIgPSBqdXJpX2NvZGlnbykNCg0KIyBUaXR1bGFyZXMgDQp0aXR1bGFyZXNfYmEgPC0gdGl0dWxhcmVzX2FubyB8PiANCiAgIyBGaWx0cm8gbG9zIGRlIGJ1ZW5vcyBhaXJlcw0KICBmaWx0ZXIocHJvdmluY2lhX2lkID09ICIwNiIpIHw+IA0KICAjIENyZW8gdW5hIGNvbHVtbmEgY29uIGVsIGNvZGlnbyBzaW4gZWwgMDYgZGUgbGEgcHJvdmluY2lhIHBhcmEgcG9kZXIgbWF0Y2hlYXIgY29uIGVsIGNlbnNvDQogIG11dGF0ZShkZXBhcnRhbWVudG9fY29kaWdvID0gc3Vic3RyKGRlcGFydGFtZW50b19pZCwgMywgbmNoYXIoZGVwYXJ0YW1lbnRvX2lkKSksDQogICAgICAgICBhbm8gPSBhcy5jaGFyYWN0ZXIoeWVhcihwZXJpb2RvKSkpIA0KDQojIFVubyBhbWJhcyBiYXNlcyBwYXJhIHBvZGVyIG9wZXJhcg0KbWFwYV9wYmEgPC0gYmFfZGVwdG9faW5kZWMgfD4gDQogIGxlZnRfam9pbih0aXR1bGFyZXNfYmEgfD4gDQogICAgICAgICAgICAgIHNlbGVjdCgtYyhtdW5pY2lwaW8sIG11bmljaXBpb19pZCwgDQogICAgICAgICAgICAgICAgICAgICAgICBkZXBhcnRhbWVudG9faWQsDQogICAgICAgICAgICAgICAgICAgICAgICBwcm92aW5jaWEsDQogICAgICAgICAgICAgICAgICAgICAgICBkZXBhcnRhbWVudG8pKSkgfD4gDQogIG11dGF0ZShwb3JjZW50YWplID0gKHRpdHVsYXJlcy9wb2JsYWNpb24pKjEwMCkgDQoNCmJhc2VfZmluYWxfcGJhIDwtIG1hcGFfYmEgfD4gDQogIGxlZnRfam9pbihtYXBhX3BiYSB8PiANCiAgc2VsZWN0KGRlcGFydGFtZW50b19ub21icmUsZGVwYXJ0YW1lbnRvX2NvZGlnbywgYW5vLCBwb3JjZW50YWplKSB8PiANCiAgICByZW5hbWUoImNvZGRlcHRvX2NlbnNvIiA9IGRlcGFydGFtZW50b19jb2RpZ28pIHw+IA0KICAgIGZpbHRlcighIGFubyA9PSAiMjAyMSIpKQ0KDQoNCnRhYmxhX3BiYSA8LSBtYXBhX3BiYSB8PiANCiAgc2VsZWN0KGRlcGFydGFtZW50b19ub21icmUsIGFubywgcG9ibGFjaW9uLCB0aXR1bGFyZXMsIHBvcmNlbnRhamUpIHw+IA0KICBwaXZvdF93aWRlcihuYW1lc19mcm9tID0gYW5vLCB2YWx1ZXNfZnJvbSA9IGMocG9ibGFjaW9uLCB0aXR1bGFyZXMsIHBvcmNlbnRhamUpKSANCg0KI0RUOjpkYXRhdGFibGUodGFibGFfcGJhKQ0KDQp3cml0ZXhsOjp3cml0ZV94bHN4KHRhYmxhX3BiYSwgImJhc2VzLXBhcmEtY3luL3RhYmxhX3BiYS54bHN4IikNCmBgYA0KDQoNCmBgYHtyfQ0KDQptYXBhX2J1ZW5vc19haXJlcyA8LSBiYXNlX2ZpbmFsX3BiYSB8PiANCiAgZ2dwbG90KCkgKw0KICBnZW9tX3NmKGFlcyhmaWxsID0gcG9yY2VudGFqZSwgdGV4dCA9IHBhc3RlKCJEZXBhcnRhbWVudG86IiwgZGVwYXJ0YW1lbnRvX25vbWJyZSwgIjxicj5Qb3JjZW50YWplOiIsIHJvdW5kKHBvcmNlbnRhamUsMSksICIlIikpKSArDQogIHNjYWxlX2ZpbGxfdmlyaWRpc19jKG9wdGlvbiA9ICJwbGFzbWEiLA0KICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb24gPSAtMSwNCiAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gcGVyY2VudF9mb3JtYXQoc2NhbGUgPSAxKSkgKw0KICBnZ3RoZW1lczo6dGhlbWVfcGFuZGVyKCkgKw0KICBsYWJzKHRpdGxlID0gIlBvcmNlbnRhamUgZGUgdGl0dWxhcmVzIHBvciBkZXBhcnRhbWVudG8iLA0KICAgICAgIHN1YnRpdGxlID0gIkVuIGJhc2UgYSBwcm95ZWNjaW9uZXMgZGUgSU5ERUMiLA0KICAgICAgIGZpbGwgPSAiUG9yY2VudGFqZSIpICsNCiAgdGhlbWUoDQogICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTZMLCBmYWNlID0gImJvbGQiLCBoanVzdCA9IDAuNSksDQogICAgcGxvdC5zdWJ0aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTRMLCBmYWNlID0gIml0YWxpYyIsIGhqdXN0ID0gMC41KSwNCiAgICB0ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxKQ0KICApICsNCiAgeWxhYigiIikgKw0KICB4bGFiKCIiKSArDQogIGZhY2V0X3dyYXAodmFycyhhbm8pKSAgICMgQcOxYWRlIHNjYWxlcyA9ICJmcmVlIiBwYXJhIGFqdXN0YXIgbGFzIGVzY2FsYXMgZGUgbG9zIGVqZXMgZW4gY2FkYSBwYW5lbA0KDQojbWFwYV9idWVub3NfYWlyZXMNCg0KZ2dzYXZlKHBsb3QgPSBtYXBhX2J1ZW5vc19haXJlcywgImdyYWZpY29zL21hcGFfYnVlbm9zX2FpcmVzLnBuZyIpDQoNCiMgTG9zIGRhdG9zIHRvdGFsZXMgZGUgbGEgcHJvdmluY2lhDQoNCm1hcGFfcGJhICAlPiUNCiAgZmlsdGVyKCFhbm8gID09ICAyMDIxKSAlPiUgDQogIGdyb3VwX2J5KGFubykgfD4gDQogIHN1bW1hcmlzZShUaXR1bGFyZXMgPXN1bSh0aXR1bGFyZXMpLA0KICAgICAgICAgICAgUG9ibGFjaW9uID1zdW0ocG9ibGFjaW9uKSwNCiAgICAgICAgICAgIFBvcmNlbnRhamUgPSBwYXN0ZTAocm91bmQoKFRpdHVsYXJlcy9Qb2JsYWNpb24pKjEwMCwxKSwiJSIpKSAlPiUgDQogIHJlbmFtZSgiQcOxbyIgPSBhbm8pICU+JSANCiAgZ3QoKSAlPiUNCiAgdGFiX2hlYWRlcigNCiAgICB0aXRsZSA9ICJQb3JjZW50YWplIGRlIHRpdHVsYXJlcyBwb3IgYcOxbyBlbiBCdWVub3MgQWlyZXMiLA0KICAgIHN1YnRpdGxlID0gIkVuIGJhc2UgYSBwcm95ZWNjaW9uZXMgcG9ibGFjaW9uYWxlcyBkZSBJTkRFQyINCiAgKSANCg0KZ2dwbG90bHkobWFwYV9idWVub3NfYWlyZXMsIHRvb2x0aXAgPSAidGV4dCIpDQpgYGANCg0KIyMgTW9udG9zIA0KDQpgYGB7cn0NCiMgRmlsdHJvIGVsIG1vbnRvIHBvciBwb3RlbmNpYXIgdHJhYmFqbw0KbW9udG9zX3ZpZ2VudGVzIDwtIHJlYWRfY3N2KCJodHRwczovL2RhdG9zYWJpZXJ0b3MuZGVzYXJyb2xsb3NvY2lhbC5nb2IuYXIvZGF0YXNldC8yZmJmYjNlMi1jZDBhLTRkMWItYWMzYi04OTMyNmU4ZTRmOWMvcmVzb3VyY2UvNjc3ODM5NmUtNzVmNy00ZmNlLWFjNjUtOTdkMWU1ZTQ1MjVlL2Rvd25sb2FkL21vbnRvcy10cmFuc2ZlcmVuY2lhcy0yMDIzLTAxLTAxLmNzdiIpIHw+IA0KICBmaWx0ZXIocHJvZ3JhbWEgPT0gIlBvdGVuY2lhciBUcmFiYWpvIikgfD4gDQogIG11dGF0ZShwZXJpb2RvID0gZm9ybWF0LkRhdGUocGVyaW9kbywgIiVtLyVZIikpDQoNCg0KIyBUcmFpZ28gZWwgSVBDIGRlIElOREVDIHBhcmEgcGFzYXIgbHMgbW9udG9zIGEgcHJlY2lvcyByZWFsZXMNCg0KaXBjIDwtIHJlYWRfZXhjZWwoImRhdGEvc2hfaXBjXzA5XzIzLnhscyIsIA0KICAgIHNoZWV0ID0gImFuYWxpc2lzX3BvdGVuY2lhciIpIHw+DQogIGNsZWFuX25hbWVzKCkgfD4gDQogIG11dGF0ZShwZXJpb2RvID0gZm9ybWF0LkRhdGUoZmVjaGEsICIlbS8lWSIpKSB8PiANCiAgc2VsZWN0KC1mZWNoYSkgfD4gDQogIHJlbmFtZSgiaXBjIiA9IG5pdmVsX2dlbmVyYWwpIHw+IA0KICByaWdodF9qb2luKG1vbnRvc192aWdlbnRlcykgfD4NCiAgbXV0YXRlKGlwYz0gaXBjLzEwMCwNCiAgICAgICAgIG1vbnRvX3JlYWwgPSBtb250by9pcGMsDQogICAgICAgICBwZXJpb2RvID0gYXMuRGF0ZShwYXN0ZSgiMDEvIiwgcGVyaW9kbywgc2VwID0gIiIpLCBmb3JtYXQgPSAiJWQvJW0vJVkiKSkNCg0KDQoNCmBgYA0KDQpgYGB7cn0NCg0KIyBBcm1vIGdyYWZpY28gZGVsIElQQw0KDQpsaW5lYV9pcGMgPC0gZ2dwbG90KGlwYykgKw0KICBhZXMoeCA9IHBlcmlvZG8sIHkgPSBtb250b19yZWFsKSArDQogIGdlb21fbGluZSgpICsNCiAgZ2VvbV9wb2ludCgpICsNCiAgbGFicygNCiAgICB4ID0gIiAiLA0KICAgIHkgPSAiICIsDQogICAgdGl0bGUgPSAiRXZvbHVjacOzbiBkZSBsb3MgbW9udG9zIGRlbCBwcm9ncmFtYSAoMjAyMC0yMDIyKSIsDQogICAgY2FwdGlvbiA9ICJGdWVudGU6IEVsYWJvcmFjacOzbiBwcm9waWEgZW4gYmFzZSBhbCBJUEMgZGUgSU5ERUMiLA0KICApICsNCiAgZ2d0aGVtZXM6OnRoZW1lX3BhbmRlcigpICsNCiAgdGhlbWUoDQogICAgbGVnZW5kLnBvc2l0aW9uID0gInRvcCIsDQogICAgcGxvdC50aXRsZSA9IGVsZW1lbnRfdGV4dChzaXplID0gMTVMLCBmYWNlID0gImJvbGQiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGp1c3QgPSAwLjUpLA0KICAgIHBsb3Quc3VidGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE0TCwgZmFjZSA9ICJpdGFsaWMiLCBoanVzdCA9IDAuNSkNCiAgKSArDQogIHNjYWxlX3hfZGF0ZShkYXRlX2xhYmVscyA9ICIlbS0leSIsIGRhdGVfYnJlYWtzID0gIjMgbW9udGhzIikgKw0KICBzY2FsZV95X2NvbnRpbnVvdXMobGFiZWxzID0gY29tbWEsIGxpbWl0cyA9IGMoMTUwMCw0MDAwKSkNCg0KDQpnZ3NhdmUocGxvdCA9IGxpbmVhX2lwYywgImdyYWZpY29zL2xpbmVhX2lwYy5wbmciKQ0KDQpnZ3Bsb3RseShsaW5lYV9pcGMpDQpgYGANCg0KaHR0cHM6Ly93d3cuaW5kZWMuZ29iLmFyL2luZGVjL3dlYi9OaXZlbDQtVGVtYS0zLTUtMzENCg0KDQpgYGB7cn0NCg0KaXBjICAlPiUgIyBDb252aWVydGUgJ3BlcmlvZG8nIGEgZm9ybWF0byBkZSBmZWNoYQ0KICBncm91cF9ieSgiQcOxbyIgPSBsdWJyaWRhdGU6OnllYXIocGVyaW9kbykpICU+JQ0KICBzdW1tYXJpc2UoDQogICAgIlByaW1lciBwZXJpb2RvIiA9IGZpcnN0KGZvcm1hdC5EYXRlKHBlcmlvZG8sIiViICVZIikpLA0KICAgICN1bHRpbW9fcGVyaW9kbyA9IG1heChwZXJpb2RvKSwNCiAgICAiUHJpbWVyIG1vbnRvIiA9IHBhc3RlMCgiIixmaXJzdChtb250bykpLA0KICAgICN1bHRpbW9fbW9udG8gPSBsYXN0KG1vbnRvKSwNCiAgICAiTW9udG8gZW4gcHJlY2lvcyByZWFsZXMiID0gcGFzdGUwKCIiLHJvdW5kKGZpcnN0KG1vbnRvX3JlYWwpLDIpKSwNCiAgICAjdWx0aW1vX21vbnRvX3JlYWwgPSBsYXN0KG1vbnRvX3JlYWwpDQogICkgJT4lIA0KICBndCgpICU+JQ0KICB0YWJfaGVhZGVyKA0KICAgIHRpdGxlID0gIk1vbnRvcyBwb3IgYcOxbyIsDQogICAgc3VidGl0bGUgPSAiUHJpbWVyIHBlcsOtb2RvIGRlIGNhZGEgYcOxbyINCiAgKSANCmBgYA0KDQo=